#include<stdio.h>
#define Size 3
#define Arraysize(a) sizeof(a)/sizeof(a[0])
//数组名作为函数参数传递时表现为指针：地址为数组首元素的地址
void PrintArray(int a[Size])
{
    
for(int i=0;i<Arraysize(a);i++)
{
     printf("%d %p\n",a[i],&a[i]);

}

}

int main()
{
    int a[Size]={1,2,3}
    PrintArray(a);
    //指针的数据类型代表他的步长：int型指针取值就为整型4个节
    int *p=a;
    p++;//所以p++走了一步指向a[1]地址
    

    for(int i=0;i<Size;i++)
    {
        printf("%d",*(a+i))//通过指针访问数组元素
        //a[i]==*（a+i）
    }
    
    return 0;
}











int main()
{
    int a[3];
    printf("%d\n",sizeof(a));
    //数组单个元素
    //数组下标：代表数组中的元素序号，从0开始
    a[0]=1;
    a[1]=2;
    a[2]=3;
    //访问越界：数组访问的下标超过了最大限度

    //数组通过下标循环访问
        for(int i=0;i<3;i++)
        {
            printf("%d ",a[i]);
        }
        printf("\n");


        //数组初始化
         int a[3]={1,2,3};
         //初始化可以不写下标
         //不写下标，也被叫做静态数组：容量不能变化的数组
         //定义数组大小不能用const（伪常量）只能用difine定义。
         int a[]={1,2,3};
         int a[Size]={1,2,3};
         //数组的地址是连续的
         printf("%d %p\n",a[i],&a[i]);


         //数组的容量：数组的总大小/单个元素的大小

            for(int i=0;i<Arraysize(a);i++)//定义一个宏函数表示数组容量
        {

        }


        int a[Size]={1,2,3};
        printf("%p %p %p",a,&a[0],&a);//地址相等
        printf("%p %p %p",a+1,&a[0]+1,&a+1);//地址不同



    
    
    
    
    
    return 0;
}